/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bcc.airlines.database;

import javax.swing.JOptionPane;

/**
 * Essa classe segue o padrao Factory que permite a abstracao da criacao dos
 * objetos de acesso aos dados (DAO)
 *
 * Use esse metodo getDAO() e passe a classe da entidade que vc queira lidar que
 * ele retorna o objeto de interacao com o banco.
 */
public class DAOFactory {

    /**
     * metodo factory que retorna uma instancia especifica do DAO
     *
     * @param <T>
     * @param classe
     * @return
     */
    public static <T> DAO getDAO(Class classe) throws Exception {
        switch (classe.getName()) {
            case "com.bcc.airlines.domain.Aeroporto":
                return new DAO<>();
            case "com.bcc.airlines.domain.Aeronave":
                return new DAO<>();
            case "com.bcc.airlines.domain.Assento":
                return new DAO<>();
            case "com.bcc.airlines.domain.Companhia":
                return new DAO<>();
            case "com.bcc.airlines.domain.Passageiro":
                return new DAO<>();
            case "com.bcc.airlines.domain.Tripulante":
                return new DAO<>();
            case "com.bcc.airlines.domain.Voo":
                return new DAO<>();
            case "com.bcc.airlines.domain.Passagem":
                return new DAO<>();
            default:
                throw new Exception(classe.getName() + " nao possui DAO");
        }
    }
}
